#include <iostream>

using namespace std;

void Swap(int *p1, int *p2);
void QuickSort(int *arr, int l, int r);

int arr[] = {0, 7, 6, 5, 4, 3, 2, 1, 9, 8};
int arrLen = 10;

void Swap(int *p1, int *p2)
{
	int t = *p1;
	*p1 = *p2;
	*p2 = t;
}

void QuickSort(int *arr, int l, int r)
{
	if (l > r)
		return;
	int i = l;
	int j = r;
	int *n = arr + l;
	while (i != j)
	{
		while (!((*(arr + j)) < *n) && i < j)
			j--;
		while (!((*(arr + i)) > *n) && i < j)
			i++;
		if (i < j)
			Swap(arr + i, arr + j);
	}
	Swap(n, arr + i);
	QuickSort(arr, l, i - 1);
	QuickSort(arr, i + 1, r);
}

// int main()
// {
// 	QuickSort(arr, 0, arrLen);
// 	cout << "Sorted Array is";
// 	while (arrLen--) cout << "[" << * arr + arrLen << "] ";
// 	return 0;
// }